Jeżeli brakuje danych - dana wartość może być pusta, ale może być wstawiona jakaś wartość domyślna (np. w kolumnie wzrost
mogłyby być wpisane wartości 0
, które od razu widać, że nie mają sensu) - można podjąć następujące kroki:
# Przykładowe dane z brakującymi wartościami
data = {'A': [1, 2, None, 4, 5],
'B': [None, 2, 3, None, 5],
'C': [1, None, None, 4, 5]}
# Tworzenie DataFrame
df = pd.DataFrame(data)
df_without_cols = df.drop(columns=['column_name_1', 'column_name_2'])
from sklearn.impute import SimpleImputer
# Wykorzystamy DataFrame z poprzedniego fragmentu kodu
# Wypełnianie wartością średnią
imputer_mean = SimpleImputer(strategy='mean')
df_imputed_mean = pd.DataFrame(imputer_mean.fit_transform(df), columns=df.columns)
#Wypełnianie medianą
imputer_median = SimpleImputer(strategy='median')
df_imputed_median = pd.DataFrame(imputer_median.fit_transform(df), columns=df.columns)
# Wypełnianie najczęstszą wartością
imputer_most_frequent = SimpleImputer(strategy='most_frequent')
df_imputed_most_frequent = pd.DataFrame(imputer_most_frequent.fit_transform(df), columns=df.columns)
# Wypełnianie stałą wartością podaną przez użytkownika
imputer_constant = SimpleImputer(strategy='constant', fill_value=5)
df_imputed_constant = pd.DataFrame(imputer_constant.fit_transform(df), columns=df.columns)
# Metody korzystające z regresji
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer, KNNImputer
# Wypenianie przy pomocy regresji wielokrotnej
iter_imputer = IterativeImputer()
df_iter_imputed = pd.DataFrame(iter_imputer.fit_transform(df), columns=df.columns)
# Wypełnianie za pomocą k-Najbliższych sąsiadów
knn_imputer = KNNImputer(n_neighbors=3)
df_knn_imputed = pd.DataFrame(knn_imputer.fit_transform(df), columns=df.columns)
Należy pamiętać, że po podzieleniu datasetu na zbiór treningowy, walidacyjny i testowy należy wykorzystywać ten sam
imputer
iskalery
dla wszystkich zbiorów. Oznacza to, że należy wykorzystaćfit
lubfit_transform
przy zbiorze treningowym, a dla pozostałych wykorzystywać samotransform
.
Przejdź do kolejnego zagadnienia (Normalizacja i standaryzacja) lub kliknij tutaj, aby wrócić do strony głównej tematu.